package com.zr.planclass.controller;

import com.zr.Inquiry.meiju.TypeEnum;
import com.zr.planclass.meiju.StatusEnum;
import com.zr.planclass.pojo.*;
import com.zr.planclass.pojo.StatusVo;
import com.zr.planclass.service.PlanClassService;
import com.zr.util.ResultVo;
import com.zr.util.ResultVoBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by Administrator on 2019/9/21.
 */
@RestController
//@RequestMapping("")
@CrossOrigin //支持跨域
public class PlanClassController {

    @Autowired
    private PlanClassService planClassService;

    @PostMapping("planCategory/queryPage")//@RequestBody接受json格式，@Valid做表单验证， BindResult接受错误提示信息
    public ResultVo queryPage(@RequestBody PlanClassSelectVo planClassSelectVo){
        ResultVo resultVo =  planClassService.queryPage(planClassSelectVo);
        return resultVo;
    }

    @PostMapping("planCategory/add")//@RequestBody接受json格式，@Valid做表单验证， BindResult接受错误提示信息
    public ResultVo add(@RequestBody @Valid PlanClassAddVo planClassAddVo, BindingResult bindingResult){
        //判断是否存在错误信息
        if (bindingResult.hasErrors()){
            //如果存在return给页面错误信息
            return ResultVoBuilder.error("500",bindingResult.getFieldError().getDefaultMessage());
        }
        List<PlanClassAddVo> planClassAddVoList = new ArrayList<>();
        planClassAddVoList.add(planClassAddVo);
        //如果没有错误跳到service层进行逻辑处理
        ResultVo resultVo =  planClassService.add(planClassAddVoList);
        return resultVo;
    }

    @PostMapping("planCategory/update")//@RequestBody接受json格式，@Valid做表单验证， BindResult接受错误提示信息
    public ResultVo update(@RequestBody @Valid PlanClassUpdateVo planClassUpdateVo, BindingResult bindingResult){
        //判断是否存在错误信息
        if (bindingResult.hasErrors()){
            //如果存在return给页面错误信息
            return ResultVoBuilder.error("500",bindingResult.getFieldError().getDefaultMessage());
        }
        //如果没有错误跳到service层进行逻辑处理
        ResultVo resultVo =  planClassService.update(planClassUpdateVo);
        return resultVo;
    }

    @PostMapping("planCategory/updateStatus")//@RequestBody接受json格式，@Valid做表单验证， BindResult接受错误提示信息
    public ResultVo updateStatus(@RequestBody PlanClassUpdateStatusVo planClassUpdateStatusVo, BindingResult bindingResult){
        //判断是否存在错误信息
        if (bindingResult.hasErrors()){
            //如果存在return给页面错误信息
            return ResultVoBuilder.error("500",bindingResult.getFieldError().getDefaultMessage());
        }
        //如果没有错误跳到service层进行逻辑处理
        ResultVo resultVo =  planClassService.updateStatus(planClassUpdateStatusVo);
        return resultVo;
    }


    @PostMapping("quotation/InquiryIntroduction")
    public ResultVo importFile(MultipartFile file)throws Exception{
        return planClassService.importFile(file);
    }

    //导出
    //1.定义一个导出模板
    //2.从数据库中查询出将要导出的数据
    //3.把从数据库中查询出的数据赋值给导出模板
    //4.对需要转化的数据进行转化
    //5.在浏览器生成一个文件
/*    @GetMapping("/exportExcel/master11")
    public ResultVo exportExcel(HttpServletResponse resp, String code, String name, Integer status) throws Exception{
        PlanClassSelectVo planClassSelectVo = new PlanClassSelectVo();
        planClassSelectVo.setCode(code);
        planClassSelectVo.setName(name);
        planClassSelectVo.setStatus(status);
        return planClassService.exportExcel(resp,planClassSelectVo);
    }*/
}
